iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

Maximum Subarray (LeetCode 53, Kadane’s Algorithm)

解題思路

  1. 動態規劃:
  • dp[i] = 以 nums[i] 結尾的最大子陣列和
  • 遞推式:dp[i] = max(nums[i], dp[i-1] + nums[i])
  • Kadane’s Algorithm → O(n) 時間,O(1) 空間
  1. Kotlin 解法
class Solution {
    fun maxSubArray(nums: IntArray): Int {
        var maxSoFar = nums[0]
        var curr = nums[0]
        for (i in 1 until nums.size) {
            curr = maxOf(nums[i], curr + nums[i])
            maxSoFar = maxOf(maxSoFar, curr)
        }
        return maxSoFar
    }
}
  1. Follow-up
  • 如果要輸出實際的子陣列?
  • 如果陣列長度很大,如何做分治 (Divide & Conquer)?
  • 如果陣列是 2D,怎麼處理?(最大子矩陣和 → 進階題)

上一篇
#11
下一篇
#13
系列文
來都來了-涮就涮吧16
  1. 12
    #11
  2. 13
    #12
  3. 14
    #13
  4. 15
    #14
  5. 16
    #15
完整目錄
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言